<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>

        // Array.isArray    Array.from    String.fromCharCode  ...
        //  都不是实例的方法
        //  属于构造函数自己的方法


        // const arr = [];



        function Dog(name) {
            this.name = name;
        }
        Dog.prototype.say = function () {
            console.log('汪')
        }


        // Dog是一个函数，也是一个对象

        // cc 属于Dog的私有属性 --- 不能被实例访问
        // fn 属于Dog的私有方法  --- 不能被实例访问 
        Dog.cc = 'dog';
        Dog.fn = function () {
            console.log('cc')
        }


        const d = new Dog('柯基');
        // d.fn();
        // console.log(d.cc)


        Dog.fn()
        console.log(Dog.cc)



        // 给构造函数添加私有方法
        Array.noRepeat = function (arr) {
            const s = new Set(arr);
            return [...s]
        }


        const arr2 = Array.noRepeat([1, 2, 1, 2, 3]);
        console.log(arr2)


    </script>

</body>

</html>